/**
 * 工作流-列表
 */
(function (app, ng) {
    'use strict';

    /**
     * 注册控制器
     */
    app.controller('workflowCtrl', Controller);

    /**
     * 依赖项
     */
    Controller.$inject = ['$scope', '$controller', 'worlflowService']
        .concat(['$state', '$stateParams', '$uibModal', 'dialogs']);

    /**
     * 控制器
     * @param $scope 当前作用域
     * @param $controller
     * @param module 当前模块
     * @param Service 当前服务
     * @param $state 路由状态
     * @param $stateParams 路由参数
     * @param $uibModal 模态框服务
     * @param dialogs 模态框服务
     * @constructor
     */
    function Controller($scope, $controller, Service, $state, $stateParams, $uibModal, dialogs) {
        // 初始化
        var vm = this;
        //extendResourceController();
        var iResource = vm.iResource;
        
        // 属性声明
        vm.defaultQuery = {};
        vm.table = {}; // 表格
        vm.tableOptions = Service.tableOptions(); // 表格设置

        vm.categorys=[
            {
            	name:"这是分类一",
            	value:"1"
        	},
        	{
            	name:"这是分类二",
            	value:"2"
            	}
        ];
        // 方法引用
        ng.extend(vm, {
        	search:search,//查询
        	reset:reset,//重置
        	addModel:addModel, //跳转新增模板页面
        	creatModel:creatModel, //创建模型
        	cancelModel:cancelModel, //取消创建
        	editModel:editModel,//编辑模型
        	deployModel:deployModel,//部署模型
        	exportModel:exportModel,//导出模型
        	deleteModel:deleteModel//删除模型
        });

        // 方法声明

        /**
         * 继承Restful控制器
         */
        function extendResourceController() {
            var controller = $controller('iResourceController', {$scope: $scope, iResource: Service});
            ng.extend(vm, controller);
        }

        //新增模板
        function addModel(){
        	$state.go("app.workflow.modelAdd");
        }
        
        //取消创建模板
        function cancelModel(){
        	$state.go("app.workflow.modelList");
        }
        
        //编辑模型
        function editModel(modelId){
        	window.open(ISS.getPath("act/process-editor/modeler.jsp?modelId=" + modelId),"_blank");
        }
        //部署模型
        function deployModel(modelId){
        	 // 弹出确认删除提示信息
            var dlg = dialogs.confirm(undefined, getMessage("common.deployConfirm"));
            dlg.result.then(function (data) {
            	Service.deployModel(modelId).then(function (data) {
                    // 刷新列表
            		vm.table.flexReload();
                    //弹出提示信息
                    dialogs.notify(data);
                });
            });
        	
        }
        //导出模型
        function exportModel(modelId){
        	window.location.href = ISS.getPath("/act/export/" + modelId);
        }
        //删除模型
        function deleteModel(modelId){
        	 // 弹出确认删除提示信息
            var dlg = dialogs.confirm(undefined, getMessage("common.deleteConfirm"));
            dlg.result.then(function (data) {
            	Service.deleteModel(modelId).then(function (data) {
                    // 刷新列表
            		vm.table.flexReload();
                    //弹出提示信息
                    dialogs.notify(data);
                });
            });
        }
        
        function creatModel(){
        	var param = angular.copy(vm.model);
        	Service.createModel(param).then(function(data){
        		window.open(ISS.getPath("act/process-editor/modeler.jsp?modelId=" + data.id),"_blank");
        		$state.go("app.workflow.modelList");
        	})
        }
        // 重置
        function reset() {
            vm.query = angular.copy(vm.defaultQuery);
            search();
        }

        // 搜索
        function search() {
            var param = angular.copy(vm.query);
            vm.table.flexOptions({
                newp: 1,
                extParam: param
            }).flexReload();
        }

        /**
         * 创建表格参数
         */
        function tableParam() {
            // 搜索参数
            var param = angular.extend({}, $stateParams, vm.query);
            // // 不查询未提交的计划
            // param.statuses = [Service.STATUS.COMMIT.value, Service.STATUS.THROUGH.value, Service.STATUS.REFUSE.value];
            if (vm.query.dateStart > vm.query.dateEnd) {
                dialogs.notify(getMessage("error.timeRangeError"));
                return;
            }
            param[param.searchType] = param.keyword;
            delete param.searchType;
            delete param.keyword;
            return param;
        }

    }
})(iApp.module(), window.angular);